動作するきれいなコード: SeleniumConf Tokyo 2019 基調講演文字起こし+α - t-wadaのブログ
https://cdn-ak.f.st-hatena.com/images/fotolife/t/t-wada/20191225/20191225133409.png
動作するきれいなコード: SeleniumConf Tokyo 2019 基調講演文字起こし α - t-wadaのブログ
文字起こしされているのでBlog見るのがおすすめsawachin.icon
記憶力、把握力、忍耐力をSystemで解決する
「動作するきれいなコード」。Ron Jeffriesのこの簡潔な言葉が、テスト駆動開発(TDD)のゴールだ。動作するきれいなコードはあらゆる意味で価値がある
この業界は、変わるものが多すぎるのです。 OSも、ハードウェアも、ブラウザも、言語も、フレームワークも、開発環境も、開発手法のトレンドも、5年前に動いていたやりかたを、今日寸分の狂い無く再現することはできません。
率直な表現をするなら「書いて動かしてみるまでわからないことがまだまだ多すぎる」というのが現実です。
人間は3年前に書いたコードの詳細を覚えているでしょうか。おそらく覚えてはいません。それどころか1ヶ月前さえあやしいものです。
人間には人間というハードウェアが持った限界があるのです。
ソフトウェアの開発を健全に続けるためには、機械が人間の能力を補完してさらに伸ばしていく方向に進化していく必要がありました。
バージョン管理ツール無しでシステム開発に臨むのは、一切セーブしないでロールプレイングゲームのクリアにチャレンジするようなものです。
2本目の柱は Testing です。 テスティングは人間の把握力の限界を補います。
Test だけでなく "ing" が大事で、テストを書き、行うだけでなく、テストを書き続け、実行し続けることによって人間の把握力の限界を補います。
人間は覚えていられる事はそんなに多くないので、 「あのとき動いていたもの」が「今もその通り動かせるか、動いているかどうか」はわかりません。 多分動きますくらいしか言えないでしょう。
3本目の柱は Automation、 自動化です。 自動化は人間の忍耐力の限界を補います。
ソフトウェア開発は小さく定型的な繰り返し作業が非常に多いという特徴があります。 定義ファイルを書き換えたらコードを自動生成したり、 コードを書き換えたらビルドしてテストを行ったり、 テスト結果を集めてレポートにしたり、 手順書に沿ってリリース対象のファイルをコピーしてパッケージングしたりと、 ひとつひとつは小さいタスクの繰り返しでソフトウェア開発は成り立っています。
で、当の人間は、そういった単純な繰り返し作業がとにかく苦手です。
人間は、考えること、創造的に脳を働かせるのはまあまあ得意なのですが、 決まったことを寸分違わず繰り返せと言われても、だんだん飽きてくるし疲れてきます。 飽きたり疲れたりすると作業の精度が落ちていきます。
一番弱々しい矢印であるリファクタリングを守るためには、「リファクタリングを独りにしない」ことが何よりも大事です。 独り、つまり独立タスクにすると、呪いにかかってしまい、完遂できなくなります。
ではどうすればよいでしょうか。
リファクタリングを細かく分解し、日々のプログラミングの名も無き1ステップにしてしまえばいいのです。